package com.shux.springsource.lookup;
/**
 * 描述：look-up 用于解决当一个单例的bean的属性中存在一个prototype的属性bean，如果用set,get注入
 * 则prototype的属性也会跟单例bean的生命周期一样，即属性bean只会产生一个实例bean，这不是我们想要的，
 * 我们想要的是可以产生不同的实例，而look-up就是解决这一问题的，用look-up即使宿主bean是单例的，只要属性bean是
 * prototype类型的，就可以产生多个实例.
 * 
 * <pre>HISTORY
 * ****************************************************************************
 *  ID   DATE           PERSON          REASON
 *  1    2018年1月18日      Simba.Hua         Create
 * ****************************************************************************
 * </pre>
 * @author Simba.Hua
 */
public abstract class HelloImpl implements HelloApi{
	private Printer printer;
	@Override
	public void sayHello() {
		printer.print("setter");
		createPrototypePrinter().print("prototype");
		createSingletonPrinter().print("singleton");
	}
	public abstract Printer createPrototypePrinter();
	public Printer createSingletonPrinter() {
		System.out.println("该方法不会被执行，如果执行了就出错了");
		return new Printer();
	}
	
	public void setPrinter(Printer printer) {
		this.printer = printer;
	}
}
